﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using LIM.model;
using LIM.controller;
using Telerik.WinControls.UI;

using p_Library;

namespace LIM.forms.uc_SYS_QuanTriNguoiDung
{
    public partial class uc_SYS_QuanTriNguoiDung_ThongTinNhanVien : BaseUserControl
    {        
        DanhMucPhongBanController _DanhMucPhongBanController = new DanhMucPhongBanController();

        radForm_SYS_QuanTriNguoiDung parentForm=null;
        public uc_SYS_QuanTriNguoiDung_ThongTinNhanVien()
        {
            InitializeComponent();

            // Khai báo các controls sẽ áp dụng phân quyền trong hệ thống
            ControlPermissionList.Add(this.radMenuItem_LuuLai);
            ControlPermissionList.Add(this.radMenuItem_XoaBo);
            // Kết thúc khai báo
            
            this.radDropDownList_PhongBan.DataSource = _DanhMucPhongBanController.LayDanhSach_PhongBan();
        }

        void parentForm_OnRowChange()
        {
            if (parentForm.SelectedEntity != null)
            {
                BindControls();
            }            
        }

        private void uc_SYS_QuanTriNguoiDung_ThongTinNhanVien_Load(object sender, EventArgs e)
        {
            parentForm = (radForm_SYS_QuanTriNguoiDung)this.ParentForm;
            if (parentForm != null)
            {
                parentForm.OnRowChange += new radForm_SYS_QuanTriNguoiDung.GridViewDoubleClick(parentForm_OnRowChange);
            }            
        }

        protected void BindControls()
        {
            if (parentForm.SelectedEntity.tbl_SYS_Users == null)
                parentForm.SelectedEntity.tbl_SYS_Users = new tbl_SYS_Users();
            this.radTextBox_TenDangNhap.Text = parentForm.SelectedEntity.tbl_SYS_Users.UserName;
            this.radTextBox_HoTen.Text = parentForm.SelectedEntity.HoTen;
            this.radTextBox_SoDiDong.Text = parentForm.SelectedEntity.SoDiDong;
            this.radTextBox_SoDienThoaiBan.Text = parentForm.SelectedEntity.SoDienThoaiBan;
            this.radCheckBox_DangHoatDong.Checked = parentForm.SelectedEntity.IsUsed.HasValue ? parentForm.SelectedEntity.IsUsed.Value : false;
            this.radDropDownList_PhongBan.SelectedValue = parentForm.SelectedEntity.RowIDPhongBan;
            this.radTextBox_MatKhau.Text = "";

            BindControlsNgayCapNhat();
        }

        private void BindControlsNgayCapNhat()
        {
            this.radLabel_NgayTao.Text = "";
            this.radLabel_NgayCapNhat.Text = "";
            this.radLabel_NhanVienTao.Text = "";
            this.radLabel_NhanVienCapNhat.Text = "";

            if (parentForm.SelectedEntity.NgayTao.HasValue)
                this.radLabel_NgayTao.Text = "Ngày tạo: " + parentForm.SelectedEntity.NgayTao.Value.ToString("dd/MM/yyyy hh:mm");
            if (parentForm.SelectedEntity.NgayCapNhat.HasValue)
                this.radLabel_NgayCapNhat.Text = "Ngày cập nhật: " + parentForm.SelectedEntity.NgayCapNhat.Value.ToString("dd/MM/yyyy hh:mm");
            if (!string.IsNullOrEmpty(parentForm.SelectedEntity.NguoiTao))
                this.radLabel_NhanVienTao.Text = "Người tạo: " + parentForm.SelectedEntity.NguoiTao;
            if (!string.IsNullOrEmpty(parentForm.SelectedEntity.NguoiCapNhat))
                this.radLabel_NhanVienCapNhat.Text = "Người cập nhật: " + parentForm.SelectedEntity.NguoiCapNhat;
        }

        private void radMenuItem_LuuLai_Click(object sender, EventArgs e)
        {
            if (!IsValidatedSaving())
                return;

            Application.UseWaitCursor = true;
            parentForm.SelectedEntity.tbl_SYS_Users.UserName = this.radTextBox_TenDangNhap.Text.Trim();
            parentForm.SelectedEntity.tbl_SYS_Users.LoweredUserName = this.radTextBox_TenDangNhap.Text.Trim().ToLower();
            parentForm.SelectedEntity.tbl_SYS_Users.IsActived = this.radCheckBox_DangHoatDong.Checked;
            parentForm.SelectedEntity.HoTen = this.radTextBox_HoTen.Text;
            parentForm.SelectedEntity.SoDiDong = this.radTextBox_SoDiDong.Text;
            parentForm.SelectedEntity.SoDienThoaiBan = this.radTextBox_SoDienThoaiBan.Text;
            parentForm.SelectedEntity.IsUsed = this.radCheckBox_DangHoatDong.Checked;
            parentForm.SelectedEntity.RowIDPhongBan = (int)this.radDropDownList_PhongBan.SelectedValue;

            if (!string.IsNullOrEmpty(this.radTextBox_MatKhau.Text.Trim()))
                parentForm.SelectedEntity.tbl_SYS_Users.Password = (new cls_CONCryptography()).mtd_Encrypt(this.radTextBox_MatKhau.Text);

            if (parentForm.SelectedEntity.RowID == 0)
            {
                parentForm.SelectedEntity.NgayTao = parentForm._SYSController.GetCurrentDateTimeFromDatabaseServer();
                parentForm.SelectedEntity.NguoiTao = InitUserInfos.UserName;
            }
            parentForm.SelectedEntity.NgayCapNhat = parentForm._SYSController.GetCurrentDateTimeFromDatabaseServer();
            parentForm.SelectedEntity.NguoiCapNhat = InitUserInfos.UserName;

            string _mess="";
            int _code = 0;
            if (parentForm._SYSController.SaveObject(parentForm.SelectedEntity, out _mess, out _code))
            {
                RadDesktopAlert_SavingStatus.ShowAlertSaveSuccess("Thông tin người dùng", "Đã lưu thành công!");
                parentForm.RefreshData();
            }
            else
                MessageBox.Show(_mess);

            this.radTextBox_MatKhau.Text = "";
        }

        private bool IsValidatedSaving()
        {
            if (string.IsNullOrEmpty(this.radTextBox_TenDangNhap.Text.Trim()))
            {
                MessageBox.Show("Tên đăng nhập không được để trống", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            if (this.radDropDownList_PhongBan.SelectedIndex < 0)
            {
                MessageBox.Show("Cần phải chọn một Phòng Ban", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            if (parentForm.SelectedEntity.RowID == 0 && string.IsNullOrEmpty(this.radTextBox_MatKhau.Text.Trim()))
            {
                MessageBox.Show("Cần phải nhập mật khẩu khi tạo người dùng mới", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

        private void radMenuItem_XoaBo_Click(object sender, EventArgs e)
        {
            if (!IsValidatedDeleting())
                return;

            if (MessageBox.Show("Người dùng " + parentForm.SelectedEntity.tbl_SYS_Users.UserName + " sẽ bị xóa." + Environment.NewLine + "Xin xác nhận lại việc có tiếp tục xóa hay không?", "Xóa người dùng", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                string _mess = "";
                if (parentForm._SYSController.DeleteObject(parentForm.SelectedEntity.tbl_SYS_Users, out _mess))
                {
                    RadDesktopAlert_SavingStatus.ShowAlertDeleteSuccess("Thông tin người dùng", "Đã xóa thành công người dùng!");
                    parentForm.RefreshData();
                    parentForm.SelectedEntity = new tbl_DanhMuc_ThongTinNhanVien();
                    BindControls();
                }
                else
                    MessageBox.Show(_mess);
            }
        }
        private bool IsValidatedDeleting()
        {
            if (parentForm.SelectedEntity.RowID == 0)
            {
                MessageBox.Show("Cần phải chọn người dùng cần xóa", "Lỗi!!! Dữ liệu không được cập nhật.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

    }
}
